package com.sz.service.impl;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.sz.dao.CheckItemDao;
import com.sz.entity.PageResult;
import com.sz.entity.QueryPageBean;
import com.sz.exception.MyException;
import com.sz.pojo.CheckItem;
import com.sz.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

@Service
@Transactional
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired
    private CheckItemDao checkItemDao;


    @Override
    public List<CheckItem> findAll() {
        return checkItemDao.findAll();
    }

    @Override
    public void add(CheckItem checkItem) {
        checkItemDao.add(checkItem);
    }

    @Override
    public PageResult<CheckItem> findPage(QueryPageBean queryPageBean) {
        //使用pageHelper分页参数设置
        Page<CheckItem> startPage = PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
        //判断是否有查询条件
        if (!StringUtils.isEmpty(queryPageBean.getQueryString())) {
            //有则拼接%，实现模糊查询
            queryPageBean.setQueryString("%"+queryPageBean.getQueryString()+"%");
        }
        //查询条件
        Page<CheckItem> page= checkItemDao.findByCondition(queryPageBean.getQueryString());
        System.out.println("startPage==>page : " + (startPage == page));
        //封装到pageResult中
        PageResult<CheckItem> pageResult = new PageResult<CheckItem>(page.getTotal(),page.getResult());
        //返回
        return pageResult;
    }


    @Override
    public void deleteById(int id) {
        //判断检查项是否被检查组使用，通过检查项id查询检查组检查项关系，统计个数
        int count = checkItemDao.findCountByCheckItemId(id);
        //如果个数>0
        if (count>0){
            //被使用了不能删除
            throw new MyException("该检查项被使用不能删除");
        }
        //如果个数=0，删除检查项
        checkItemDao.deleteById(id);
    }

    @Override
    public CheckItem findById(int id) {
        return checkItemDao.findById(id);
    }

    @Override
    public void update(CheckItem checkItem) {
        checkItemDao.update(checkItem);
    }
}
